// src/utils/objectUtils.js

/**
 * 深比较两个值是否相等（支持对象、数组、基本类型）
 * @param {any} obj1 第一个值
 * @param {any} obj2 第二个值
 * @returns {boolean} 是否相等
 */
export const isObjectEqual = (obj1, obj2) => {
  // 处理基本类型和null
  if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {
    return obj1 === obj2;
  }

  // 处理数组（数组也是对象，需要单独判断）
  if (Array.isArray(obj1) && Array.isArray(obj2)) {
    if (obj1.length !== obj2.length) return false;
    for (let i = 0; i < obj1.length; i++) {
      if (!isObjectEqual(obj1[i], obj2[i])) return false;
    }
    return true;
  }

  // 处理日期对象（特殊对象类型）
  if (obj1 instanceof Date && obj2 instanceof Date) {
    return obj1.getTime() === obj2.getTime();
  }

  // 处理普通对象
  const keys1 = Object.keys(obj1);
  const keys2 = Object.keys(obj2);
  if (keys1.length !== keys2.length) return false;

  for (const key of keys1) {
    if (!keys2.includes(key) || !isObjectEqual(obj1[key], obj2[key])) {
      return false;
    }
  }

  return true;
};